package com.itany.cloud.service;

import com.itany.cloud.entity.User;
import com.itany.cloud.util.ResponseResult;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.*;

// @FeignClinet:使用OpenFeign调用服务
// value属性:指定需要调用的微服务是谁
// 其值对应的是注册到注册中心中的微服务名
// 指定微服务之后,相当于访问了对应微服务的协议名://域名:端口
// 此处相当于访问了:http://127.0.0.1:8001
// fallback属性:指定当前服务的fallback类
// 当指定微服务出现问题时,进入哪一个类处理
@Service
//@FeignClient(value = "cloud-eureka-provider",fallback = UserServiceFallback.class)
@FeignClient(value = "cloud-eureka-zuul",fallback = UserServiceFallback.class)
public interface UserSerivce {

    // 可以使用Handler方法所提供的注解访问资源
    // @RequestMapping相关注解
    // 由于此处并不是Handler方法
    // 因此,在当前serivce接口中,一切Handler默认行为全部失效

    // 此处的@GetMapping("/users")并不是表示配置当前方法的访问命令
    // 而是访问指定微服务中的哪一个请求去实现该方法
    @GetMapping("/v1/userService/users")
    public ResponseResult findAll();

    @GetMapping("/v1/userService/users/{id}")
    public ResponseResult findById(@PathVariable("id") Integer id);

    @PostMapping("/v1/userService/users")
    public ResponseResult addUser(@RequestParam("username") String username, @RequestParam("password") String password, @RequestParam("phone") String phone, @RequestParam("address") String address);

    @PutMapping("/v1/userService/users")
    public ResponseResult modifyUser(@RequestParam("id") Integer id,@RequestParam("username") String username, @RequestParam("password") String password, @RequestParam("phone") String phone, @RequestParam("address") String address);

    @DeleteMapping("/v1/userService/users/{id}")
    public ResponseResult deleteUser(@PathVariable("id") Integer id);

}
